import { ajax, tools } from './ajax.js';

//#region 查询的部分

let tbData = document.getElementById('tbData');
let txtDeptName = document.getElementById('txtDeptName');
let btnQuery = document.getElementById('btnQuery');

// 查询的结果集
let list = [];

// 分页信息
let page = {
  pageNumber: 1,
  pageSize: 7,
  total: 0,
  pageCount: 0,
};

// 查询过滤的条件信息
let queryInfo = {
  deptName: '',
};

btnQuery.addEventListener('click', () => {
  // 改动查询的条件，记录要返回到第一页
  page.pageNumber = 1;
  query();
});

function query() {
  // 过滤条件
  queryInfo.deptName = txtDeptName.value;

  ajax.post(
    '/manage/dept/queryAll',
    tools.mergeJson(page, queryInfo),
    (data) => {
      console.log('查询部门的结果：', data);
      if (data.success) {
        // 成功应答就重新显示数据
        list = data.list;
        showData();
        // 更新分页信息
        page = data.page;
        showPage();
        return;
      }
      // 失败就显示服务器端返回的错误信息
      alert(data.message);
    }
  );
}

function showData() {
  // 清空原有的数据
  tbData.innerHTML = '';
  // 遍历数据，显示到表格中
  for (let i = 0; i < list.length; i++) {
    let info = list[i];
    let tr = document.createElement('tr');
    let td;
    // 编号
    td = document.createElement('td');
    td.append(info.deptId);
    tr.append(td);

    // 名称
    td = document.createElement('td');
    td.append(info.deptName);
    tr.append(td);

    // 描述
    td = document.createElement('td');
    td.append(info.deptInfo);
    tr.append(td);

    // 信息修改时间
    td = document.createElement('td');
    td.append(tools.formatDate(info.lastupdate));
    tr.append(td);

    // 操作的部分
    td = document.createElement('td');
    // 删除的部分
    let btnDel = document.createElement('button');
    btnDel.append('删除');
    td.append(btnDel);
    btnDel.addEventListener('click', () => {
      del(info);
    });
    // 修改的部分
    let btnModi = document.createElement('button');
    btnModi.append('修改');
    td.append(btnModi);
    btnModi.addEventListener('click', () => {
      showModify(info);
    });

    tr.append(td);

    tbData.append(tr);
  }
}

let spPage = document.getElementById('spPage');
let apre = document.getElementById('apre');
let anext = document.getElementById('anext');

// 下一页
anext.addEventListener('click', () => {
  page.pageNumber++;
  // 不能超过最大分页数量
  if (page.pageNumber > page.pageCount) {
    page.pageNumber = page.pageCount;
    return;
  }
  query();
});

// 上一页
apre.addEventListener('click', () => {
  page.pageNumber--;
  // 不能小于第一页
  if (page.pageNumber < 1) {
    page.pageNumber = 1;
    return;
  }
  query();
});

/**
 * 显示分页信息
 */
function showPage() {
  spPage.innerHTML = `
    当前页码/总页数/记录数:
    ${page.pageNumber}/${page.pageCount}/${page.total}
  `;
}

query();
//#endregion

//#region 添加的部分
let aname = document.getElementById('aname');
let ainfo = document.getElementById('ainfo');
let btnAdd = document.getElementById('btnAdd');
let spAdd = document.getElementById('spAdd');

btnAdd.addEventListener('click', () => {
  spAdd.innerHTML = '';
  ajax.post(
    '/manage/dept/add',
    {
      deptName: aname.value,
      deptInfo: ainfo.value,
    },
    (data) => {
      spAdd.innerHTML = data.message;
      query();
    }
  );
});

//#endregion

//#region 删除的部分
function del(info) {
  console.log('要删除的信息：', info);
  // confirm是确认对话框，点确定才会返回真
  if (confirm(`是否确定删除<${info.deptName}>吗？`)) {
    ajax.post(
      '/manage/dept/delete',
      {
        deptId: info.deptId,
      },
      (data) => {
        alert(data.message);
        query();
      }
    );
  }
}

//#endregion

//#region 修改的部分

let divModi = document.getElementById('divModi');
let mname = document.getElementById('mname');
let minfo = document.getElementById('minfo');
let btnModi = document.getElementById('btnModi');
let btnCancel = document.getElementById('btnCancel');
let spModi = document.getElementById('spModi');

// 默认不要显示修改的区域
divModi.style.display = 'none';

// 记住要修改的信息
let modifyInfo;

function showModify(info) {
  console.log('要修改的信息：', info);
  modifyInfo = info;
  mname.value = modifyInfo.deptName;
  minfo.value = modifyInfo.deptInfo;
  // 显示修改的区域
  divModi.style.display = 'block';
}

// 取消按钮就关闭修改的区域
btnCancel.addEventListener('click', () => {
  divModi.style.display = 'none';
  query();
});

btnModi.addEventListener('click', () => {
  // 修改信息
  modifyInfo.deptName = mname.value;
  modifyInfo.deptInfo = minfo.value;
  console.log('修改后的信息：', modifyInfo);
});

//#endregion

// 作业，仿造上课部门管理完成班级的管理
